home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 2 of 2).iso / demos / d049.dms / in.adf / scroller2.s < prev    next >
Encoding:
Text File  |  1987-05-06  |  7.5 KB  |  381 lines

  1. ExecBase    EQU    4
  2. OpenLibrary    EQU    -552
  3. AllocMem    EQU    -198
  4. FreeMem        EQU    -210
  5.  
  6. * Graphics
  7. InitBitmap    EQU    -390
  8. InitRastPort    EQU    -198
  9. SetAPen        EQU    -342
  10. Move        EQU    -240
  11. Text        EQU    -60
  12. ScrollRaster    EQU    -396
  13.  
  14. Bitmap_Size    EQU    50000
  15.  
  16.     OPT    P+            Relocatable Code
  17.  
  18.     BSR    Open_Libraries
  19.     BSR    Get_Memory
  20.     BSR    Clear_Bitmap
  21.     BSR    Init_Screen
  22.     BSR    Setup_Copper
  23.  
  24.     BSR    Init_Scroller
  25.     BSR    Put_Text_On_Screen
  26.  
  27. Wait_Mouse_Press
  28.     CMPI.B    #0,$DFF006
  29.     BNE    Wait_Mouse_Press
  30.     BSR    Move_BackGround
  31.     BSR    Move_ForeGround
  32.     BSR    Move_ForeGround
  33.     BSR    Pulse_Colours
  34.     BSR    Fade_Prompt
  35.     BSR    Fade_Prompt
  36.     BSR    Scroll_Msg
  37.     LEA    Scroll_Delay(PC),A0
  38.     SUBQ.B    #1,(A0)
  39.     BNE    Not_Text_Time
  40.     BSR    Put_Char_On
  41.  
  42. Not_Text_Time
  43.     BSR    Pause_Routine
  44.     BTST    #6,$BFE001
  45.     BNE    Wait_Mouse_Press
  46. Finish
  47.     BSR    Reset_Copper
  48.     BSR    Free_Memory
  49.     CLR.L    D0
  50.     RTS
  51.  
  52. Open_Libraries:
  53.     MOVE.L    ExecBase,A6
  54.     LEA    GfxName(PC),A1
  55.     CLR.L    D0
  56.     JSR    OpenLibrary(A6)
  57.     LEA    GfxBase(PC),A1
  58.     MOVE.L    D0,(A1)
  59.     RTS
  60.  
  61. Get_Memory:
  62. * Memory For Copper List
  63.     MOVE.L    #Copper_Size,D0
  64.     MOVEQ.L    #3,D1
  65.     JSR    AllocMem(A6)
  66.     LEA    Copper_Mem(PC),A0
  67.     MOVE.L    D0,(A0)
  68. * Memory For Bitmap
  69.     MOVE.L    #Bitmap_Size,D0
  70.     MOVE.L    #3,D1
  71.     JSR    AllocMem(A6)
  72.     LEA    Bitmap_Mem(PC),A0
  73.     MOVE.L    D0,(A0)
  74.     RTS
  75.  
  76. Free_Memory:
  77.     MOVE.L    ExecBase,A6
  78.     MOVE.L    Copper_Mem(PC),A1
  79.     MOVE.L    #Copper_Size,D0
  80.     JSR    FreeMem(A6)
  81.     MOVE.L    Bitmap_Mem(PC),A1
  82.     MOVE.L    #Bitmap_Size,D0
  83.     JSR    FreeMem(A6)
  84.     RTS
  85.  
  86. Clear_Bitmap:
  87.     MOVE.L    Bitmap_Mem(PC),A0
  88.     MOVE.L    A0,D0
  89.     MOVE.L    #3300,D1
  90. Clr_Bmap
  91.     CLR.L    (A0)+
  92.     SUBQ.L    #1,D1
  93.     BNE    Clr_Bmap
  94. Set_Bitmap_Address
  95.     LEA    Bitmap_Lo(PC),A1
  96.     MOVE.W    D0,(A1)
  97.     SWAP    D0
  98.     LEA    Bitmap_Hi(PC),A1
  99.     MOVE.W    D0,(A1)
  100.     RTS
  101.  
  102. Init_Screen:
  103.     MOVE.L    GfxBase(PC),A6
  104.     LEA    Bitmap_Struct(PC),A0
  105.     MOVE.L    #1,D0                Depth
  106.     MOVE.L    #$300,D1            Width
  107.     MOVE.L    #$C0,D2                Height
  108.     JSR    InitBitmap(A6)
  109.     LEA    Bitmap_Struct(PC),A0
  110.     MOVE.L    Bitmap_Mem(PC),8(A0)
  111.     LEA    RastPort_Struct(PC),A1
  112.     JSR    InitRastPort(A6)
  113.     LEA    Bitmap_Struct(PC),A0
  114.     LEA    RastPort_Struct(PC),A1
  115.     MOVE.L    A0,4(A1)
  116.     RTS
  117.  
  118. Setup_Copper:
  119.     MOVE.L    Copper_Mem(PC),A0
  120.     LEA    My_Copper_List(PC),A1
  121. Move_Copper_List
  122.     MOVE.L    (A1),(A0)+
  123.     CMP.L    #$FFFFFFFE,(A1)+
  124.     BNE    Move_Copper_List
  125.     MOVE.W    #$0080,$DFF096            Stop Copper Int.
  126.     MOVE.L    GfxBase(PC),A1
  127.     LEA    Old_Copper_Base(PC),A0
  128.     MOVE.L    $32(A1),(A0)
  129.     MOVE.L    Copper_Mem(PC),$32(A1)
  130.     MOVE.W    #$8080,$DFF096            Start Copper Int.
  131.     RTS
  132.  
  133. Reset_Copper:
  134.     MOVE.W    #$0080,$DFF096            Stop Copper Int.
  135.     MOVE.L    GfxBase(PC),A0
  136.     MOVE.L    Old_Copper_Base(PC),$32(A0)
  137.     MOVE.W    #$8080,$DFF096            Start Copper Int.
  138.     RTS
  139.  
  140. Move_BackGround
  141.     MOVE.L    Copper_Mem(PC),A0
  142.     ADD.L    #Wrap_Start-My_Copper_List,A0
  143.     MOVE.L    A0,A1
  144.     MOVE.L    #58,D0                Num. Cop Lines
  145. BackGround_Line
  146.     MOVE.W    18(A0),6(A0)
  147.     ADD.L    #12,A0
  148.     DBF    D0,BackGround_Line
  149.     MOVE.W    6(A1),6(A0)
  150.     RTS
  151.  
  152. Move_ForeGround
  153.     MOVE.L    Copper_Mem(PC),A0
  154.     ADD.L    #Wrap_End-My_Copper_List,A0
  155.     MOVE.L    A0,A1
  156.     MOVE.L    #58,D0
  157. ForeGround_Line
  158.     MOVE.W    10(A0),22(A0)
  159.     SUB.L    #12,A0
  160.     DBF    D0,ForeGround_Line
  161.     MOVE.W    10(A1),22(A0)
  162.     RTS
  163.  
  164. Pulse_Colours
  165.     LEA    Red(PC),A0
  166.     BSR    Pulse_Colour
  167.     LEA    Green(PC),A0
  168.     BSR    Pulse_Colour
  169.     RTS
  170.  
  171. Pulse_Colour
  172.     TST.B    1(A0)
  173.     BEQ    Inc_Red
  174.     SUBQ.B    #1,(A0)
  175.     CMPI.B    #0,(A0)
  176.     BNE    Pulse_Exit
  177.     NOT.B    1(A0)
  178.     RTS
  179. Inc_Red    ADDQ.B    #1,(A0)
  180.     CMPI.B    #14,(A0)
  181.     BNE    Pulse_Exit
  182.     NOT.B    1(A0)
  183. Pulse_Exit
  184.     RTS
  185.  
  186. Fade_Prompt
  187.     MOVE.L    Copper_Mem(PC),A0
  188.     ADD.L    #Bot_Col-My_Copper_List,A0
  189.     CLR.L    D1
  190.     CLR.L    D0
  191.     MOVE.B    Red(PC),D0
  192.     LSL.W    #8,D0
  193.     CLR.L    D1
  194.     MOVE.B    Green(PC),D1
  195.     LSL.W    #4,D1
  196.     ADD.L    D1,D0
  197.     CLR.L    D1
  198.     MOVE.B    Blue(PC),D1
  199.     ADD.L    D1,D0
  200.     MOVE.W    D0,(A0)
  201.     RTS
  202.         
  203.  
  204. Pause_Routine
  205.     RTS
  206.  
  207.     MOVEM.L    D0,-(SP)
  208.     MOVE.L    #200,D0
  209. Pause_Loop
  210.     SUBQ.L    #1,D0
  211.     BNE    Pause_Loop
  212.     MOVEM.L    (SP)+,D0
  213.     RTS
  214.  
  215. Scroll_Msg
  216.     LEA    RastPort_Struct(PC),A1
  217.     MOVEQ.L    #2,D0                DX
  218.     MOVEQ.L    #0,D1                DY
  219.     MOVEQ.L    #0,D2                XMIN
  220.     MOVE.L    #73,D3                YMIN
  221.     MOVE.L    #409,D4                XMAX
  222.     MOVE.L    #85,D5                YMAX
  223.     MOVE.L    GfxBase(PC),A6
  224. Wait_Line
  225.     CMPI.B    #140,$DFF006
  226.     BNE.S    Wait_Line
  227.     JSR    ScrollRaster(A6)
  228.     RTS
  229.  
  230. Put_Char_On
  231.     MOVE.B    #4,(A0)            Reset delay counter
  232.     LEA    RastPort_Struct(PC),A1
  233.     MOVE.L    #390,D0
  234.     MOVE.L    #80,D1
  235.     JSR    Move(A6)
  236.     MOVE.L    Scroll_Pointer(PC),A0
  237.     MOVEQ.L    #1,D0
  238.     JSR    Text(A6)
  239.     LEA    Scroll_Pointer(PC),A0
  240.     ADDQ.L    #1,(A0)
  241.     MOVE.L    (A0),A0
  242.     CMPI.B    #0,(A0)
  243.     BNE    Not_Wrap
  244. Init_Scroller
  245.     LEA    Scroll_Message(PC),A0
  246.     LEA    Scroll_Pointer(PC),A1
  247.     MOVE.L    A0,(A1)
  248. Not_Wrap
  249.     RTS
  250.  
  251. GfxName    DC.B    'graphics.library',0
  252.     EVEN
  253.  
  254. Put_Text_On_Screen
  255.     MOVE.L    GfxBase(PC),A6
  256.     LEA    RastPort_Struct(PC),A1
  257.     MOVEQ.L    #1,D0                Pen
  258.     JSR    SetAPen(A6)
  259.     MOVE.L    #180,D0
  260.     MOVEQ.L    #20,D1
  261.     JSR    Move(A6)
  262.     LEA    RastPort_Struct(PC),A1
  263.     MOVE.L    #60,D0
  264.     MOVE.L    #120,D1
  265.     JSR    Move(A6)
  266.     LEA    Message_4(PC),A0
  267.     MOVEQ.L    #Message_4_Size,D0
  268.     JSR    Text(A6)
  269.     RTS
  270.  
  271. My_Copper_List
  272.     DC.L    $01001200,$01020000,$01080000,$010A0000
  273.     DC.L    $00920020,$009400D8,$008E1C00,$009030FF
  274.     DC.L    $01040024
  275.     DC.W    $00E0
  276. Bitmap_Hi
  277.     DC.W    $0007
  278.     DC.W    $00E2
  279. Bitmap_Lo
  280.     DC.W    $0870
  281.     DC.L    $01800000,$01820FFF
  282.  
  283. Wrap_Start
  284.     DC.L    $3401FFFE,$01800000,$01820000
  285.     DC.L    $3501FFFE,$01800001,$01820100
  286.     DC.L    $3601FFFE,$01800002,$01820200
  287.     DC.L    $3701FFFE,$01800003,$01820300
  288.     DC.L    $3801FFFE,$01800004,$01820400
  289.     DC.L    $3901FFFE,$01800005,$01820500
  290.     DC.L    $3A01FFFE,$01800006,$01820600
  291.     DC.L    $3B01FFFE,$01800007,$01820700
  292.     DC.L    $3C01FFFE,$01800008,$01820800
  293.     DC.L    $3D01FFFE,$01800009,$01820900
  294.     DC.L    $3E01FFFE,$0180000A,$01820A00
  295.     DC.L    $3F01FFFE,$0180000B,$01820B00
  296.     DC.L    $4001FFFE,$0180000C,$01820C00
  297.     DC.L    $4101FFFE,$0180000D,$01820D00
  298.     DC.L    $4201FFFE,$0180000E,$01820E00
  299.     DC.L    $4301FFFE,$0180000F,$01820F00
  300.     DC.L    $4401FFFE,$0180001F,$01820F10
  301.     DC.L    $4501FFFE,$0180002F,$01820F20
  302.     DC.L    $4601FFFE,$0180003F,$01820F30
  303.     DC.L    $4701FFFE,$0180004F,$01820F40
  304.     DC.L    $4801FFFE,$0180005F,$01820F50
  305.     DC.L    $4901FFFE,$0180006F,$01820F60
  306.     DC.L    $4A01FFFE,$0180007F,$01820F70
  307.     DC.L    $4B01FFFE,$0180008F,$01820F80
  308.     DC.L    $4C01FFFE,$0180009F,$01820F90
  309.     DC.L    $4D01FFFE,$018000AF,$01820FA0
  310.     DC.L    $4E01FFFE,$018000BF,$01820FB0
  311.     DC.L    $4F01FFFE,$018000CF,$01820FC0
  312.     DC.L    $5001FFFE,$018000DF,$01820FD0
  313.     DC.L    $5101FFFE,$018000EF,$01820FE0
  314.     DC.L    $5201FFFE,$018000FF,$01820FF0
  315.     DC.L    $5301FFFE,$018000FE,$01820FE0
  316.     DC.L    $5401FFFE,$018000FD,$01820FD0
  317.     DC.L    $5501FFFE,$018000FC,$01820FC0
  318.     DC.L    $5601FFFE,$018000FB,$01820FB0
  319.     DC.L    $5701FFFE,$018000FA,$01820FA0
  320.     DC.L    $5801FFFE,$018000F9,$01820F90
  321.     DC.L    $5901FFFE,$018000F8,$01820F80
  322.     DC.L    $5A01FFFE,$018000F7,$01820F70
  323.     DC.L    $5B01FFFE,$018000F6,$01820F60
  324.     DC.L    $5C01FFFE,$018000F5,$01820F50
  325.     DC.L    $5D01FFFE,$018000F4,$01820F40
  326.     DC.L    $5E01FFFE,$018000F3,$01820F30
  327.     DC.L    $5F01FFFE,$018000F2,$01820F20
  328.     DC.L    $6001FFFE,$018000F1,$01820F10
  329.     DC.L    $6101FFFE,$018000F0,$01820F00
  330.     DC.L    $6201FFFE,$018000E0,$01820E00
  331.     DC.L    $6301FFFE,$018000D0,$01820D00
  332.     DC.L    $6401FFFE,$018000C0,$01820C00
  333.     DC.L    $6501FFFE,$018000B0,$01820B00
  334.     DC.L    $6601FFFE,$018000A0,$01820A00
  335.     DC.L    $6701FFFE,$01800090,$01820900
  336.     DC.L    $6801FFFE,$01800080,$01820800
  337.     DC.L    $6901FFFE,$01800070,$01820700
  338.     DC.L    $6A01FFFE,$01800060,$01820600
  339.     DC.L    $6B01FFFE,$01800050,$01820500
  340.     DC.L    $6C01FFFE,$01800040,$01820400
  341.     DC.L    $6D01FFFE,$01800030,$01820300
  342.     DC.L    $6E01FFFE,$01800020,$01820200
  343.     DC.L    $6F01FFFE,$01800010,$01820100
  344. Wrap_End
  345.     DC.L    $7001FFFE,$01800000,$01820000
  346.     DC.L    $7101FFFE,$01800000,$01820000
  347.     DC.L    $7201FFFE,$01820FFF,$01800000
  348.     DC.W    $D001,$FFFE,$0182
  349. Bot_Col    DC.W    $0333
  350.     DC.L    $FFFFFFFE
  351. Copper_Size    EQU *-My_Copper_List
  352.  
  353. Message        DC.B    'MATRIX'
  354. Message_Size    EQU *-Message
  355.         EVEN
  356. Message_2    DC.B    'PRESENTS'
  357. Message_2_Size    EQU *-Message_2
  358.         EVEN
  359. Message_3    DC.B    'A GOOD DEMO!'
  360. Message_3_Size    EQU *-Message_3
  361.         EVEN
  362. Message_4    DC.B    'Press Left Button To Continue'
  363. Message_4_Size    EQU *-Message_4
  364.         EVEN
  365. Scroll_Pointer    DC.L    0
  366. Scroll_Delay    DC.B    50
  367. Scroll_Message
  368.         DC.B     'HI FROM MATRIX , JUST A SMALL DEMO....'
  369.         
  370.                 DC.B 0
  371. GfxBase        DC.L    0
  372. Copper_Mem    DC.L    0
  373. Bitmap_Mem    DC.L    0
  374. Old_Copper_Base    DC.L    0
  375. Red        DC.B    10,0
  376. Green        DC.B    10,0
  377. Blue        DC.B    10,0
  378. Bitmap_Struct    DS.L    30
  379. RastPort_Struct    DS.L    30
  380.  
  381.